/*
 * @Descripttion: 鼠标事件 拖拽
 * @Define: 定义
 * @Use: {obj} dom对象id
 * @Author: yeming
 * @Date: 2020-07-15 14:37:42
 */
export function dragAble(obj) {
  obj.onmousedown = function (ev) {
    var ed = ev || event;
    var disX = ed.clientX - this.offsetLeft;
    var disY = ed.clientY - this.offsetTop;
    if (obj.setCapture) {
      obj.setCapture();
    }
    document.onmousemove = function (ev) {
      var em = ev || event;
      var L = em.clientX - disX; // 拖动元素左侧的位置=当前鼠标距离浏览器左侧的距离 - （物体宽度的一半）
      var T = em.clientY - disY; // 拖动元素顶部的位置=当前鼠标距离浏览器顶部的距离 - （物体高度的一半）
      if (L < 0) { // 如果左侧的距离小于0，就让距离等于0.不能超出屏幕左侧。如果需要磁性吸附，把0改为100或者想要的数字即可
        L = 0;
      } else if (L > document.documentElement.clientWidth - obj.offsetWidth) { // 如果左侧的距离>屏幕的宽度-元素的宽度。也就是说元素的右侧超出屏幕的右侧，就让元素的右侧在屏幕的右侧上
        L = document.documentElement.clientWidth - obj.offsetWidth;
      }
      if (T < 0) { // 和左右距离同理
        T = 0;
      } else if (T > document.documentElement.clientHeight - obj.offsetHeight) {
        T = document.documentElement.clientHeight - obj.offsetHeight;
      }
      obj.style.left = L + 'px';
      obj.style.top = T + 'px';
    };
    document.onmouseup = function () {
      document.onmousemove = document.onmouseup = null;
      if (obj.releaseCapture) {
        obj.releaseCapture();
      }
    };
    return false;
  };
};
